home *** CD-ROM | disk | FTP | other *** search
/ Java Primer Plus / Java Primer Plus (Waite Group Proess)(1996).iso / java_Win / demo / DrawTest / DrawPanel.class (.txt) < prev    next >
Encoding:
Java Class File  |  1995-10-12  |  2.6 KB  |  129 lines

  1. import java.awt.Color;
  2. import java.awt.Component;
  3. import java.awt.Event;
  4. import java.awt.Graphics;
  5. import java.awt.Panel;
  6. import java.awt.Rectangle;
  7. import java.util.Vector;
  8.  
  9. class DrawPanel extends Panel {
  10.    public static final int LINES = 0;
  11.    public static final int POINTS = 1;
  12.    int mode;
  13.    Vector lines = new Vector();
  14.    Vector colors = new Vector();
  15.    // $FF: renamed from: x1 int
  16.    int field_0;
  17.    // $FF: renamed from: y1 int
  18.    int field_1;
  19.    // $FF: renamed from: x2 int
  20.    int field_2;
  21.    // $FF: renamed from: y2 int
  22.    int field_3;
  23.    // $FF: renamed from: xl int
  24.    int field_4;
  25.    // $FF: renamed from: yl int
  26.    int field_5;
  27.  
  28.    public DrawPanel() {
  29.       ((Component)this).setBackground(Color.white);
  30.    }
  31.  
  32.    public void setDrawMode(int mode) {
  33.       switch (mode) {
  34.          case 0:
  35.          case 1:
  36.             this.mode = mode;
  37.             return;
  38.          default:
  39.             throw new IllegalArgumentException();
  40.       }
  41.    }
  42.  
  43.    public boolean handleEvent(Event e) {
  44.       switch (e.id) {
  45.          case 201:
  46.             System.exit(0);
  47.             return true;
  48.          case 502:
  49.             switch (this.mode) {
  50.                case 0:
  51.                   this.colors.addElement(((Component)this).getForeground());
  52.                   this.lines.addElement(new Rectangle(this.field_0, this.field_1, e.x, e.y));
  53.                   this.field_2 = this.field_4 = -1;
  54.                case 1:
  55.                default:
  56.                   ((Component)this).repaint();
  57.                   return true;
  58.             }
  59.          case 501:
  60.             switch (this.mode) {
  61.                case 0:
  62.                   this.field_0 = e.x;
  63.                   this.field_1 = e.y;
  64.                   this.field_2 = -1;
  65.                   break;
  66.                case 1:
  67.                default:
  68.                   this.colors.addElement(((Component)this).getForeground());
  69.                   this.lines.addElement(new Rectangle(e.x, e.y, -1, -1));
  70.                   this.field_0 = e.x;
  71.                   this.field_1 = e.y;
  72.                   ((Component)this).repaint();
  73.             }
  74.  
  75.             return true;
  76.          case 506:
  77.             switch (this.mode) {
  78.                case 0:
  79.                   this.field_4 = this.field_2;
  80.                   this.field_5 = this.field_3;
  81.                   this.field_2 = e.x;
  82.                   this.field_3 = e.y;
  83.                   break;
  84.                case 1:
  85.                default:
  86.                   this.colors.addElement(((Component)this).getForeground());
  87.                   this.lines.addElement(new Rectangle(this.field_0, this.field_1, e.x, e.y));
  88.                   this.field_0 = e.x;
  89.                   this.field_1 = e.y;
  90.             }
  91.  
  92.             ((Component)this).repaint();
  93.             return true;
  94.          default:
  95.             return false;
  96.       }
  97.    }
  98.  
  99.    public void paint(Graphics g) {
  100.       int np = this.lines.size();
  101.       g.setColor(((Component)this).getForeground());
  102.       g.setPaintMode();
  103.  
  104.       for(int i = 0; i < np; ++i) {
  105.          Rectangle p = (Rectangle)this.lines.elementAt(i);
  106.          g.setColor((Color)this.colors.elementAt(i));
  107.          if (p.width != -1) {
  108.             g.drawLine(p.x, p.y, p.width, p.height);
  109.          } else {
  110.             g.drawLine(p.x, p.y, p.x, p.y);
  111.          }
  112.       }
  113.  
  114.       if (this.mode == 0) {
  115.          g.setXORMode(((Component)this).getBackground());
  116.          if (this.field_4 != -1) {
  117.             g.drawLine(this.field_0, this.field_1, this.field_4, this.field_5);
  118.          }
  119.  
  120.          g.setColor(((Component)this).getForeground());
  121.          g.setPaintMode();
  122.          if (this.field_2 != -1) {
  123.             g.drawLine(this.field_0, this.field_1, this.field_2, this.field_3);
  124.          }
  125.       }
  126.  
  127.    }
  128. }
  129.